package com.note.app.service;

import com.note.app.dto.ai.AICreateNoteRequestDTO;
import com.note.app.dto.ai.AIEditNoteRequestDTO;
import com.note.app.dto.ai.AIChatRequestDTO;
import com.note.app.dto.ai.AIResponseDTO;
import com.note.common.domain.AIConversation;

import java.util.List;

/**
 * AI服务接口
 */
public interface AIService {
    
    /**
     * 生成笔记内容（创建笔记模式）
     * 
     * @param userId 用户ID
     * @param request 创建笔记请求
     * @return AI响应
     */
    AIResponseDTO generateNoteContent(Long userId, AICreateNoteRequestDTO request);
    
    /**
     * 增强笔记内容（编辑笔记模式）
     * 
     * @param userId 用户ID
     * @param request 编辑笔记请求
     * @return AI响应
     */
    AIResponseDTO enhanceNoteContent(Long userId, AIEditNoteRequestDTO request);
    
    /**
     * 与AI聊天
     * 
     * @param userId  用户ID
     * @param request 聊天请求
     * @return AI响应
     */
    AIResponseDTO chatWithAI(Long userId, AIChatRequestDTO request);
    
    /**
     * 获取用户AI对话历史
     * 
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return AI对话历史分页结果
     */
    Object getUserConversations(Long userId, Integer page, Integer size);
    
    /**
     * 获取用户最近的AI对话历史
     * 
     * @param userId 用户ID
     * @param limit 限制数量
     * @return AI对话历史列表
     */
    List<AIConversation> getRecentConversations(Long userId, Integer limit);
    
    /**
     * 根据ID获取AI对话历史
     * 
     * @param conversationId 对话ID
     * @return AI对话历史
     */
    AIConversation getConversationById(Long conversationId);
    
    /**
     * 删除AI对话历史
     * 
     * @param userId 用户ID
     * @param conversationId 对话ID
     * @return 是否成功
     */
    boolean deleteConversation(Long userId, Long conversationId);
} 